iT邦幫忙

0

[Golang]效能測試(Benchmark)簡介-心智圖總結

  • 分享至 

  • xImage
  •  

1. Benchmark,是GO語言用來做函數的效能測試。

2. Go語言對效能測試函數的名稱與函數的參數有什麼規定?
a. 對於效能測試函數,其名稱必須以Benchmark為開頭,並且參數只有一個 *testing.B類型的參數。
b. 檔案名稱必須要以"_test"為結尾。
c. 函數格式範例:

func BenchmarkXXX(b *testing.B) {
 //與性能測試無關的code
 b.ResetTimer()
 for i := 0; i < b.N; i++ {
  //測試的code
 }
 b.StopTimer()
 //與性能測試無關的code
}

3. 如何解釋效能測試的測試結果?
程式碼範例:(需要可以運行go test -bench)

package main

import (
  "testing"
)

func Add(x, y int) int {
  return x + y
}

func BenchmarkAdd(b *testing.B) {
  b.ResetTimer()
	for i := 0; i < b.N; i++ {
    Add(3, 5)
  }
  b.StopTimer()
}

https://ithelp.ithome.com.tw/upload/images/20201110/20131728U6NBBXuRLI.png

windows和amd64,是作業系統、位元數。
BenchmarkAdd-8 => CPU的核心數。
1000000000 => 執行次數。
0.302 ns/op => 執行一次花費的時間。

4. 效能測試函數中的計時器,做什麼用?
StartTimer、StopTimer、ResetTimer是專屬於效能測試的計時器。
分別的意思是,開始紀錄、停止紀錄、重新紀錄執行時間。
使用這幾個函數,可以避免for迴圈之外的程式碼干擾到效能測試的計算。

5. 簡易使用指令
go test -bench=. //運行資料夾下全部的benchmark
go test -bench=. -benchmem

https://ithelp.ithome.com.tw/upload/images/20201110/20131728f1TsN9joqD.png


圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言